﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

//解读密码
//https://www.nowcoder.com/questionTerminal/16fa68271ee5448cafd504bb4a64b482
//int main() {
//    string s;
//    while (getline(cin, s)) {
//        string ret;
//        ret.reserve(s.size());
//        for (const auto& ch : s)
//            if (ch >= '0' && ch <= '9') ret.push_back(ch);
//
//        cout << ret << endl;
//    }
//}

//走迷宫
//https://www.nowcoder.com/questionTerminal/6276dbbda7094978b0e9ebb183ba37b9
//char board[10][10];
//void DFS(int x, int y, int& step, int count)
//{
//    //当越界或遇到墙或步数超出当前最小步数 进行剪枝
//    if (x < 0 || y < 0 || x>9 || y>9 || count > step || board[x][y] != '.') return;
//
//    //题目要求 9 8 为固定终点
//    if (x == 9 && y == 8)
//    {
//        //如果到终点且当前步数小于目前最小步数 则更新
//        if (count < step)
//        {
//            step = count;
//            return;
//        }
//    }
//
//    board[x][y] = '#'; //遍历前将当前已经走过的道路堵上 防止死循环
//    DFS(x - 1, y, step, count + 1);
//    DFS(x, y - 1, step, count + 1);
//    DFS(x + 1, y, step, count + 1);
//    DFS(x, y + 1, step, count + 1);
//    board[x][y] = '.'; //走过的道路一定是'.'退出时恢复原状
//}
//
//int main() {
//    while (true) {
//        int arr[10][10];
//        for (int i = 0; i < 10; ++i)
//            for (int k = 0; k < 10; ++k)
//                if (!(cin >> board[i][k])) return 0;
//
//        int step = 9999;
//        //题目说明0 1为固定起点
//        DFS(0, 1, step, 0);
//        cout << step << endl;
//    }
//}